// 1790.[字符串滑窗]合法mac地址  https://oj.rnd.huawei.com/problems/1790/details
//给定一个字符串，从中按如下规则找出所有的合法mac地址的数量：
//合法 mac 地址以字符串表示时，由 12 位十六进制字符组成，
//由 12 位个连续的十六进制字符组成，每两个字符之间被用-或:分割
//合法的十六进制字符包括 0-9, a-f, A-F，；同一个 mac
//中出现的字母可以大小写混用-字母不区分大小写 一个 mac 地址中，- 与 : 不能混用
//相同 mac
//地址需去重统计；注意，仅大小写、分割符不同的两个mac地址字符串视为相同， 如
// aa-bb-12-cc-dd-ee 与 Aa:bB:12:CC:dd:ee 视为相同。
//例如下面都不是合法的mac地址：
// aa-bb-2-cc-dd-ee-11 // 不是，因为2不是两个字符
// aa-bb-22-cc-dd-eG-11 // 不是，字符G不在十六进制字符范围内
// aa-bb-22-09808980-12-12 // 不是，09808980超过两个字符了

//输入 0a-0a-0a-0a-0a-0a-0A
//输出 1
//输入 01-02-03-04-05-06-07
//输出 2
//窗口长度17=2*6+5分割符
//滑窗算法:取出一个mac地址-> mac地址是否合法-> mac地址归一化->
// mac地址添加hashmap-> next
//  i < (int)ins.length() - 16

#include <algorithm>
#include <iostream>
#include <regex>
#include <set>
#include <string>
using namespace std;

// 待实现函数，在此函数中填入答题代码
class Solution {
  set<string> stMac;
  bool isMacLetter(char c) {
    return ('a' <= c && c <= 'f') || ('A' <= c && c <= 'F');
  }
  bool isValidMac(string str) {
    if (str.length() != 17) {
      return false;
    }
    char delim = str[2];
    if (delim != '-' && delim != ':') {
      return false;
    }
    // 0A: 02: 0A: 02: 0A: 02
    for (int i = 0; i < str.length(); i++) {
      if (i % 3 == 2) {
        if (delim != str[i]) {
          return false;
        }
      } else {
        if (!isMacLetter(str[i]) && !isdigit(str[i])) {
          return false;
        }
      }
    }
    return true;
  }

 public:
  int MacLen = 17;  // 2X6+5
  int GetMacNum(string ins) {
    std::transform(ins.begin(), ins.end(), ins.begin(), ::tolower);
    for (int i = 0; i < (int)ins.length() - 16; i++) {
      string sub = ins.substr(i, 17);
      if (isValidMac(sub)) {
        std::replace(sub.begin(), sub.end(), '-', ':');
        stMac.insert(sub);
      }
    }
    return stMac.size();
  }
};

// 以下为考题输入输出框架，此部分代码不建议改动
inline std::string ReadLine() {
  std::string line;
  std::getline(std::cin, line);
  return line;
}

int main() {
  string instr = "01:0";  // 2:03:04:05:0607-08-09-10-AG-12";
  instr = ReadLine();
  Solution solu;
  int res = solu.GetMacNum(instr);
  cout << res;
  return 0;
}
